#ifndef GRAPH_H
#define GRAPH_H

#include "types.h"
#include <libxml/tree.h>


#define AQUA "#00FFFF"
#define BLUE "#0000FF"
#define BLUEVIOLET "#8A2BE2"
#define BROWN "#A52A2A"
#define CHARTREUSE "#7FFF00"
#define DARKGREEN "#006400"
#define GOLD "#FFD700"
#define HOTPINK "#FF69B4"
#define ORANGERED "#FF4500"
#define SILVER "#C0C0C0"
#define IS_VALUE_1(X) ((1 - X) < 0.00001)

void add_vertex (char* name);
void remove_vertex_by_name(char *name);
void remove_vertex_by_id (int id);
void add_edge_by_name (char * first_vertex_name, char * second_vertex_name, double weight);
void add_edge_by_id (int head_vertex_id, int tail_vertex_id, double weight);
void remove_edge(int id);
void print();
void cluster(int num_of_clusters);
void quit();

int get_number_of_vertex();
int get_number_of_edges();
vertex ** get_vertexes();
edge ** get_edges();

int getVertexID(int e, int v);
int turn_solution_to_arrays(int number_of_clusters, double *x,int **vertexes_sol, int **clusterSizes );

#endif